home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume24 / dvorak / part01 next >
Encoding:
Text File  |  1991-10-26  |  5.0 KB  |  137 lines

  1. Newsgroups: comp.sources.misc
  2. From: ramsdell@mitre.org (John D. Ramsdell)
  3. Subject:  v24i021:  dvorak - MS-DOS TSR for Dvorak keyboard, Part01/01
  4. Message-ID: <1991Oct26.215741.4863@sparky.imd.sterling.com>
  5. X-Md4-Signature: 3e0fd4c84ec502d5c224ef91db868a9c
  6. Date: Sat, 26 Oct 1991 21:57:41 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: ramsdell@mitre.org (John D. Ramsdell)
  10. Posting-number: Volume 24, Issue 21
  11. Archive-name: dvorak/part01
  12. Environment: MS-DOS
  13.  
  14. Dvorak keyboard users of PC-AT's may be interested in this program.
  15. Enjoy, John
  16. ---------------
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  22. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  23. # Contents:  dvorakat.asm
  24. # Wrapped by kent@sparky on Sat Oct 26 16:57:19 1991
  25. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  26. echo If this archive is complete, you will see the following message:
  27. echo '          "shar: End of archive."'
  28. if test -f 'dvorakat.asm' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'dvorakat.asm'\"
  30. else
  31.   echo shar: Extracting \"'dvorakat.asm'\" \(3202 characters\)
  32.   sed "s/^X//" >'dvorakat.asm' <<'END_OF_FILE'
  33. X;    Dvorak Keyboard Layout for IBM PC-AT's and clones.
  34. X
  35. X                page    62,132
  36. X
  37. X; This is a terminate-and-stay-resident application that
  38. X; translates scan codes so as to implement a Dvorak keyboard
  39. X; on IBM PC-AT's.  John D. Ramsdell - October 1991.
  40. X
  41. X; Copyright 1991 by The MITRE Corporation.
  42. X; Permission to use, copy, modify, and distribute this
  43. X; software and its documentation for any purpose and without
  44. X; fee is hereby granted, provided that the above copyright
  45. X; notice appear in all copies.  The MITRE Corporation
  46. X; makes no representations about the suitability of this
  47. X; software for any purpose.  It is provided "as is" without
  48. X; express or implied warranty.
  49. X
  50. X;          PC-AT Layout
  51. X;    ! @ # $ % ^ & * ( ) { +        Layout differs from the
  52. X;    1 2 3 4 5 6 7 8 9 0 [ =        ANSI standard because
  53. X;     " < > P Y F G C R L ? }    the following substitution
  54. X;     ' , . p y f g c r l / ]    was made:
  55. X;      A O E U I D H T N S _
  56. X;      a o e u i d h t n s -            [  =>  {
  57. X;       : Q J K X B M W V Z            ]  =>  [
  58. X;       ; q j k x b m w v z
  59. X
  60. Xresident    segment byte public 'res_code'
  61. X             assume    cs:resident
  62. X
  63. Xtable           label   byte    ; Scan code translation table
  64. X        db    00,01,02,03,04,05,06,07,08,09    ; 00
  65. X        db    10,11,26,13,14,15,40,51,52,25    ; 10
  66. X        db    21,33,34,46,19,38,53,27,28,29    ; 20
  67. X        db    30,24,18,22,23,32,35,20,49,31    ; 30
  68. X        db    12,41,42,43,39,16,36,37,45,48    ; 40
  69. X        db    50,17,47,44            ; 50
  70. Xold_interrupt   label   dword
  71. X            dd    ?    ; Old interrupt and end of table
  72. X
  73. Xtranslate_irpt  proc    far           ; Is this the service
  74. X        cmp    ah,4fh        ; we want to intercept?
  75. X        jne    done        ; No - so leave.
  76. X        mov    ah,al
  77. X        and    al,7fh        ; Kill make/break bit
  78. X        cmp    al,old_interrupt-table
  79. X        jnb    mapped        ; Not in table.
  80. X                push    bx
  81. X                mov     bx,offset table
  82. X        xlat    cs:table        ; translate
  83. X                pop     bx
  84. Xmapped:        test    ah,80h        ; Break code?
  85. X        jz    mk_arg        ; No.
  86. X        or    al,80h        ; Yes - flip bit.
  87. Xmk_arg:        mov    ah,4fh
  88. Xdone:        jmp    cs:old_interrupt; Do old interrupt.
  89. Xtranslate_irpt  endp
  90. Xresident        ends
  91. X
  92. Xtransient       segment para public 'trans_code'
  93. X                assume  cs:transient,ss:stack
  94. Xbooster         proc    far
  95. X                mov     ax,seg resident
  96. X                mov     ds,ax
  97. X                assume  ds:resident
  98. X                push    es
  99. X                mov     es,es:[2ch]     ; ES = segment of environment
  100. X                mov     ah,49h          ; Free memory block
  101. X                int     21h
  102. X                mov     ax,3515h        ; Get current interrupt
  103. X                int     21h
  104. X                mov     word ptr old_interrupt,bx
  105. X                mov     word ptr old_interrupt+2,es
  106. X                mov     dx,offset translate_irpt
  107. X                mov     ax,2515h        ; Set interrupt
  108. X                int     21h
  109. X                mov     dx,cs           ; DX = Start of transient segment
  110. X                pop     ax              ; AX = PSP segment
  111. X                sub     dx,ax           ; DX = size of resident portion
  112. X        mov    ax,3100h      ; Return code is 00h
  113. X        int    21h        ; Terminate and stay resident
  114. Xbooster     endp
  115. Xtransient    ends
  116. X
  117. Xstack           segment word stack 'trans_stack'
  118. X                db      80h dup(?)
  119. Xstack           ends
  120. X
  121. Xend        booster
  122. X
  123. Xexit 0 # Just in case...
  124. END_OF_FILE
  125.   if test 3202 -ne `wc -c <'dvorakat.asm'`; then
  126.     echo shar: \"'dvorakat.asm'\" unpacked with wrong size!
  127.   fi
  128.   # end of 'dvorakat.asm'
  129. fi
  130. echo shar: End of archive.
  131. exit 0
  132. -- 
  133. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  134. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  135. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  136. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  137.